# -*- coding: utf-8 -*-

# Define here the models for your scraped items
#
# See documentation in:
# https://doc.scrapy.org/en/latest/topics/items.html
import scrapy
import re

content_pattern = re.compile(r'\n| |\r|\t|\'|\xa0|')

"""
{
    'name': '上海兆殷特科技', 
    'company_url': 'https://www.zhipin.com/gongsi/46f1242a932eebbe1HJ839q-.html',
    'company_finance': '不需要融资', 
    'company_size': '100-499人', 
    'type': '计算机软件', 
    'description': '经营范围：;网络科技、机乎科技、计四机科技领域内的技术开发、技术服据、技术咨询、技术转期，脸据咨询，从事货员交技术的归出划业据，同完营销策刘，数方处理服据，投集黑理，示券咨询，同完由息咨询
                    与调曾（不得从事及会调曾、及会调西、民致调曾、民致测验），乎装怀四素统开发交应半，乎装脸据（不得从事早融业据），海史官商租赁，汽车
                    租赁，广告的官计、制银、代理、利半海史媒体发觉，日半常货、针纺织古、服几服饰、收化半古、体育半古、化妆古、夫具、乎装产古销售，人才
                    中介，击服据外包边式从事人阳集源服据。【依长须经批足的项目，经强关正表批足住边可开展经营竟动】', 
    'environments': '',
    'total_name':'上海兆殷特科技有限公司', 
    'reg_principal': '500万人民币',
    'reg_time': '2015-07-28',
    'reg_address': '中国（上海）自由贸易试验区郭守敬路351号2号楼A661-30室'
}

{
    'name': '资深Python开发专家',
    'company': '莱铂克',
    'job_url': 'https://www.zhipin.com/job_detail/ca94d2ac18e973df1XRz0t27F1U~.html',
    'area': '徐汇区',
    'publish_time': '2018-05-28 15:41',
    'city': '上海',
    'work_experience': '3-5年',
    'education': '本科',
    'tags': 'Python',
    'salary_low': 25,
    'salary_high': 50,
    'description':
        '
            职位描述：;
            1、负责公司沟通系统研发，包括但不限于即时通讯(IM)工具；;
            2、负责效率工具的后台开发工作，具体包括需求分析、文档撰写、设计编码、测试运维、效果追踪等工作；;
            3、负责高质量的设计和编码；承担重点、难点的技术攻坚；;
            4、参与产品讨论和开发实现。;5、主要语言为Python。;
            职位要求：;
            1、统招本科学历，3-5年工作经验;
            2、良好的设计和编码品味，热爱写代码；;
            3、较好的产品意识，愿意将产品效果做为工作最重要的驱动因素；;
            4、掌握WEB后端开发技术:协议、架构、存储、缓存、安全等；;
            5、积极乐观，认真负责，乐于协作。
        '
}
"""


class JobItem(scrapy.Item):
    company = scrapy.Field()
    name = scrapy.Field()
    salary_low = scrapy.Field()
    salary_high = scrapy.Field()
    work_experience = scrapy.Field()
    education = scrapy.Field()
    area = scrapy.Field()
    city = scrapy.Field()
    job_url = scrapy.Field()
    tags = scrapy.Field()
    publish_time = scrapy.Field()
    description = scrapy.Field()

    def format_data(self):
        item = dict(self)
        item['description'] = content_pattern.sub('', item['description'].strip())
        item['salary_high'] = int(item['salary_high'])
        item['salary_low'] = int(item['salary_low'])
        return item


class CompanyItem(scrapy.Item):
    name = scrapy.Field()
    total_name = scrapy.Field()
    type = scrapy.Field()
    company_size = scrapy.Field()
    company_finance = scrapy.Field()
    description = scrapy.Field()
    environments = scrapy.Field()
    reg_principal = scrapy.Field()
    reg_time = scrapy.Field()
    reg_address = scrapy.Field()
    company_url = scrapy.Field()

    def format_data(self):
        item = dict(self)
        item['description'] = content_pattern.sub('', item['description'].strip())
        return item

